from haystack import indexes

from goods.models import SKU


class SKUIndex(indexes.SearchIndex, indexes.Indexable):  # 注意命名规范: 要检索的Model_name+Index
    """SKU索引数据模型类"""

    # document = True 每个索引里面必须有且只有一个字段包含此属性,表示搜索引擎将使用此字段的内容作为索引进行检索(primary key), 其他字段只是附属的属性
    # use_template=True 属性允许使用数据模板建立搜索引擎索引的文件,即索引里面需要存放一些啥东西,例如SKU的name字段,这样可以通过name内容来检索SKU数据,如设搜索python,那么就可以检索出含有name含有python的SKU了,数据模板的路径为templates/search/indexes/(应用名称)goods/sku_text.txt,这里模板文件名必须为要索引的类名_text.txt,而在这个文件里写的啥就以啥建立索引,这里是以name和caption为例(默认有id?)
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        """返回建立索引的模型类"""
        return SKU

    def index_queryset(self, using=None):
        """返回要建立索引的数据查询集"""
        return self.get_model().objects.filter(is_launched=True)

# 终端命令:
# 删除所有索引: curl -XDELETE http://localhost:9200/_all
# 初始化索引: python manage.py rebuild_index
